package com.xbongbong.process.operate;

import com.xbongbong.paas.domain.entity.ext.PaasProcessTemplateNodeEntityExt;
import com.xbongbong.paas.pojo.dto.ProcessDataAddDTO;
import com.xbongbong.paas.pojo.dto.StartProcessDTO;
import com.xbongbong.paas.pojo.vo.StartProcessVO;
import com.xbongbong.paas.toolbox.exception.XbbException;

/**
 * @author: wufeng
 * @date: 2018/11/20 9:52
 * @desrcption: 流程任务操作
 */
public interface PaasProcessOperateService {

    /**
     * 新流程：开始流程 生成主线任务，修改流程状态，生成节点中负责人和抄送人任务
     * @param startProcessDTO
     * @return
     * @throws XbbException
     */
    StartProcessVO dingStartProcess(StartProcessDTO startProcessDTO) throws XbbException;

    StartProcessVO deliverToNextNode(PaasProcessTemplateNodeEntityExt templateNodeEntityExt, ProcessDataAddDTO processDataAddDTO) throws XbbException;

    /**
     * 生成节点任务，重新提交用
     * @param startProcessDTO
     * @param templateNodeEntityExt
     * @param processDataAddDTO
     * @return
     * @throws XbbException
     */
    StartProcessVO createNodeTask(StartProcessDTO startProcessDTO, PaasProcessTemplateNodeEntityExt templateNodeEntityExt, ProcessDataAddDTO processDataAddDTO) throws XbbException;

    //boolean isNeedApprove(PaasProcessTemplateNodeEntityExt templateNodeEntityExt, ProcessDataAddDTO processDataAddDTO) throws XbbException;

    void createStartNodeTask(StartProcessDTO startProcessDTO, PaasProcessTemplateNodeEntityExt templateNodeEntityExt, Long taskId) throws XbbException;
}
